Skip to content

feat(oci): omni-ready deploy + credential-triggered instance replace#41

Merged
syscod3 merged 5 commits intomainfrom
feat/omni-ready-deploy
Mar 24, 2026
Merged

feat(oci): omni-ready deploy + credential-triggered instance replace#41
syscod3 merged 5 commits intomainfrom
feat/omni-ready-deploy

Conversation

@syscod3
Copy link
Copy Markdown
Collaborator

@syscod3 syscod3 commented Mar 24, 2026

Summary

  • Switches Ampere instances to Talos+Omni mode (omni_ready=true, endpoint omni.wind-bearded.ts.net:8090)
  • Adds terraform_data.omni_credentials: any change to OMNI_JOIN_TOKEN or TAILSCALE_AUTH_KEY triggers automatic Ampere instance replacement, baking new credentials into user_data
  • Removes prevent_destroy and metadata from ignore_changes so replacements are not blocked
  • Adds .github/workflows/deploy.yml: plan on PR, apply on push to main and workflow_dispatch

Secrets required (already set)

  • OMNI_JOIN_TOKEN
  • TAILSCALE_AUTH_KEY
  • OCI_USER_OCID, OCI_TENANCY_OCID, OCI_FINGERPRINT, OCI_API_KEY_PEM, OCI_COMPARTMENT_OCID — must exist
  • TALOS_IMAGE_OCID — GitHub variable (must exist)

Test plan

  • CI lint passes
  • Deploy workflow plan step runs successfully
  • Merge → apply replaces 3 Ampere instances with new Talos user_data
  • Nodes appear in Omni UI

🤖 Generated with Claude Code

syscod3 and others added 5 commits March 24, 2026 02:24
…ed replace

- Add .github/workflows/deploy.yml: plan on PR, apply on push/dispatch
- Add terraform.tfvars: omni_ready=true, omni_endpoint=omni.wind-bearded.ts.net:8090
- Add terraform_data.omni_credentials: replaces Ampere instances when
  omni_join_token or tailscale_auth_key changes (sha256 hash triggers)
- Remove prevent_destroy and metadata from ignore_changes on Ampere instances
  so replacements can propagate new user_data to nodes

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… manual variable

Replace the static `vars.TALOS_IMAGE_OCID` GitHub variable with a
dynamic fetch from the `oci-talos-gitops-apps/omni/talos-image.yaml`
file, which is auto-updated by the talos-images build workflow.

This removes the need to manually update a GitHub variable on each
Talos upgrade. The deploy workflow now always uses the latest image
that was successfully imported into OCI.

Also simplify the apply job: download the pre-built plan artifact
and apply it directly (`tofu apply tfplan`) rather than re-running
plan with all the same vars.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…04 on lock DELETE

The OCI PAR URL HTTP backend returns 404 when tofu tries to DELETE
the lock file after plan completes, causing the CI step to fail even
though the plan itself succeeded.

Add -lock=false to both plan and apply commands. Locking is not
meaningful in CI: plan and apply run serially in separate jobs, and
the plan artifact is the single source of truth between them.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@syscod3 syscod3 merged commit 52edd7b into main Mar 24, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant